package od.one;

/**
 * @author: Shelly
 * @create: 2024-01-30 15:01:01
 * @version: 1.0
 * @describe: 出租车计费 、靠谱的车
 * 题目描述：出租车计费、靠谱的车
 * 程序员小明打了一辆出租车去上班。出于职业敏感，他注意到这辆出租车的计费表有点问题，总是偏大。
 * 出租车司机解释说他不喜欢数字4，所以改装了计费表，任何数字位置遇到数字4就直接跳过，其余功能都正常。
 * 比如：
 * 1.23再多一块钱就变为25；
 * 2.39再多一块钱变为50;
 * 3.399再多一块钱变为500;
 * 小明识破了司机的伎俩，准备利用自己的学识打败司机的阴谋。
 * 给出计费表的表面读数，返回实际产生的费用。
 * 输入描述：只有一行，数字N，表示里程表的读数。(1<=N<=888888888)。
 * 输出描述：一个数字，表示实际产生的费用。 以回车结束。
 * 用例
 * 输入	5
 * 输出	4
 * 说明	5表示计费表的表面读数。4表示实际产生的费用其实只有4块钱。
 *
 * 输入	17
 * 输出	15
 * 说明	17表示计费表的表面读数。15表示实际产生的费用其实只有15块钱。
 *
 * 输入	100
 * 输出	81
 * 说明	100表示计费表的表面读数。81表示实际产生的费用其实只有81块钱。
 */
public class OD20 {
}
/*
*
* 解题思路
我们需要理解出租车司机改装计费表的方式。司机不喜欢数字4，所以他的计费表从1开始计数，直到3，然后跳过4，继续从5计数。这意味着计费表上的每一位数字实际上只有9种可能的值：0，1，2，3，5，6，7，8，9 (跳过了4) 。 因此，这个计费表实际上是在使用一个基数为9的数制系统。
现在，让我们用三个用例来解释这个过程：
1.输入: 5
输出: 4
解释：由于计费表跳过了数字4，所以表面读数5实际上是9进制中的5。在10进制中，这是4。
2. 输入: 17
输出: 15
解释：表面读数17在9进制中表示为         但是，因为我们跳过了4，所以实际的计算应该是           (因为7实际上是8，但我们要减去1以补偿跳过的4) ，这等于
3.输入: 100
输出: 81
解释：表面读数100在9进制中表示为       在10进制中, 这等于81。
因此，通过将表面读数视为9进制数，并将其转换为10进制数，同时考虑到跳过的4，我们可以得到实际产生的费用。这就是为什么我们使用9进制进行求解的原因。
*
* 
* */